// =====================  Object新方法 开始  ======================
console.log('=====================  Object新方法 开始  ======================')

const obj = {
    foo: 'value1',
    bar: 'value2',
    get fullName() {
        return this.foo + ' ' + this.bar;
    }
};

console.log('values', Object.values(obj));
console.log('entries', Object.entries(obj));
// console.log('getOwnPropertyDescriptors', Object.getOwnPropertyDescriptors(obj));

const obj2 = Object.assign({},obj);
obj2.bar = 'bar';
console.log('obj2.fullName', obj2.fullName);

const objDesc = Object.getOwnPropertyDescriptors(obj);
const p2 = Object.defineProperties({}, objDesc);
p2.bar = 'bar';
console.log('objDesc.fullName', p2.fullName);

console.log('=====================  Object新方法 结束  ======================')
// =====================  Object新方法 结束  ======================

// =====================  String新方法 开始  ======================
console.log('=====================  String新方法 开始  ======================');

const str = 'abcde';
str.padEnd(10, 'hhj');
console.log("str.padEnd(10, 'hhj')", str.padEnd(10, 'hhj'));
console.log("str.padStart(10, 'hhj')", str.padStart(10, 'hhj'));
console.log("str.padStart(2, 'hhj')", str.padStart(2, 'hhj'));

console.log('=====================  String新方法 结束  ======================');
// =====================  String新方法 结束  ======================